// node环境下完美兼容 ES高级语法
// const gulp = require("gulp");

const { src,dest,watch }=require("gulp");

const babel=require("gulp-babel");//返回的是一个方法，兼容语法的转换

const  uglify=require("gulp-uglify");//返回的是一个方法，实现代码压缩

const rename=require("gulp-rename");//返回一个方法，实现对压缩文件的重命名

const autoprefixer=require("gulp-autoprefixer");//返回一个方法,css样式自动前缀模块，完成自动化的兼容前缀定义

const cleanCss = require("gulp-clean-css");//返回一个方法，css代码压缩

const less = require("gulp-less");


const babelConfig ={
    "presets": [ 
        ["@babel/env"] 
    ]
};

//对JS的操作
//    +兼容语法的转化
//    +代码的混淆压缩

const jsTask=function(done){
    src("./src/js/**/*.js")
    .pipe(babel(babelConfig))//兼容语法的转换
    .pipe(dest("./dist/js")) //未压缩的文件
    .pipe(rename({
        suffix: ".min"
    }))
    .pipe(uglify())          //实现代码压缩
    .pipe(dest("./dist/js"));
    done();
}

//对css的操作
//    +兼容语法的转化（浏览器前缀自动增加）
//    +压缩
const cssConfig={
    compatibility:"ie7"
};

const cssTask=function(done){
    src("./src/css/**/*.css")
    .pipe(autoprefixer())
    .pipe(dest("./dist/css/"))
    .pipe(cleanCss(cssConfig))
    .pipe(rename({
        suffix: ".min"        
    }))
    .pipe(dest("./dist/css/"));
    done();

}


//对less的操作
const lessTask=function(done){
    src("./src/less/**/*.less")
    .pipe(less())
    .pipe(autoprefixer())
    .pipe(dest("./dist/css/"))
    .pipe(cleanCss(cssConfig))
    .pipe(rename({
        suffix: ".min"        
    }))
    .pipe(dest("./dist/css/"));
    done();

}


const watcherFun=function(){
    watch("./src/",jsTask);
}
// exports.jsTask=jsTask;
module.exports={
    default:watcherFun,//直接在命令行敲gulp
    jsTask,
    cssTask,
    lessTask
};